local oo = require("SharedLibs.BaseLib");

IProperty = require("SharedLibs.Signal.IProperty");

--- Condition 是一种特殊的Property. Condition的值只允许布尔型.
local ICondition = oo.interface();
ICondition:inherit(IProperty);

--[[
	如果当前已经是true, Open不会触发changed事件.
	等价于property:SetValue(true);
]]
function ICondition:Open() end
--[[
	如果当前已经是false, Close不会触发changed事件.
	等价于property:SetValue(false);
]]
function ICondition:Close() end

--[[	
	Trigger是一种弱触发.
	如果状态为false, 它会让状态触发(设置为true), 但又立刻恢复为false, 让别的condition可以打断它.
	如果已经是true(意味着Action可能已经在执行), 会设置为false, 此时同样可以被别的condition打断它.
]]
function ICondition:Trigger() end


return ICondition;
